//home小仓库

import { reqCategoryList, reqGetBannerList, reqFloorList } from '@/api'
//仓库
//actions：处理actions，可以书写自己的业务逻辑，也可以处理异步
const actions = {


    //用户进入TypeNav组件中，用mounted挂载，调用了categoryList()此方法
    //然后再调用reqCategoryList();这是api下的index.js配置的方法
    async categoryList({ commit }) {     //async 是 JavaScript 中用于定义异步函数的关键字。
        //async和await同时存在
        //当一个网络请求返回状态码(code)为 200 时，这表示请求已成功。
        let result = await reqCategoryList();
        if (result.code == 200) {
            commit('CATEGORYLIST', result.data)
        }
    },
    //获取轮播图数据
    async getBannerList({ commit }) {
        let result = await reqGetBannerList();
        if (result.code == 200) {
            commit('GETBANNERLISTA', result.data)
        }
    },
    //获取floor数据
    async getFloorList({ commit }) {
        let result = await reqFloorList();
        if (result.code == 200) {
            commit('GETFLOORLIST', result.data)
        }
    }
};

//mutations：修改state的唯一手段
const mutations = {

    //categoryList的数据
    CATEGORYLIST(state, categoryList) {
        state.categoryList = categoryList;
    },

    //轮播的的数据
    GETBANNERLISTA(state, bannerList) {
        state.bannerList = bannerList
    },

    //修改轮播的数据
    GETFLOORLIST(state, floorList) {
        state.floorList = floorList
    }
};

//state:仓库存储数据的地方
const state = {
    //state中的数据默认初始值是根据接口返回值初始化的，
    //home仓库中存储三级菜单的数据
    categoryList: [],

    //home轮播图的数据
    bannerList: [],

    //floor的数据
    floorList: [],

};

//getters：理解为计算属性，可以简化仓库数据，让组件获取仓库的数据更加方便
const getters = {};



export default {
    actions,
    mutations,
    state,
    getters
}
